package com.itheima.demo003;

public class test27_ {
    public static void main(String[] args) {
        /*给定两个字符串,A和B
        A的旋转操作就是将A,最左边的字符,移动到最右边
        例如:若A = 'abcde',在移动一次之后,结果就是'bcdea'
        如果在若干次调整操作之后,A能变成B,那么返回TRUE
         如果不能匹配成功,则返回FALSE
         */

        //1.定义两个字符串
        String strA = "abcde";
        String strB = "deabc";

        //2.旋转字符串abcde -> bcdea -> cdeab -> deabc
        strA = rotate(strA);

        //3.调用方法,进行比较
        boolean result = check(strA, strB);

        //4,输出结果
        System.out.println(result);

    }

    //循环旋转,并比较
    public static boolean check(String strA, String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA = rotate(strA);
            if(strA.equals(strB)){
                return true;
            }
        }
        //所有的情况,都比较完毕了,还不一样.那么直接发挥FALSE
        return false;
    }

    //作用:旋转字符串,把左侧的字符,移动到右侧去
    //形参:旋转前的字符串
    //返回值:旋转后的字符串
    public static String rotate(String str){
        //如果我们看到要修改字符串的内容,可以有两个办法
        //1.用subString进行截取,把左边的字符,截取出来,拼接到右侧去
        //2.可以把字符串,先变成一个字符ARR,然后调整字符ARR里面的数据,最后把字符ARR变成字符串

        //字符串变成字符ARR,调整后,再变回字符串
        //"ABC" -> ['A', 'B', 'C']
        char[] arr = str.toCharArray();
        //拿到0索引上的字符
        char first = arr[0];
        //把剩余的字符,依次往前挪一个位置
        for (int i = 1; i < arr.length; i++) {
            arr[i - 1] = arr[i];
        }
        //把原来0索引上的字符,放到最后一个索引
        arr[arr.length - 1] = first;

        //利用字符ARR创建一个字符串对象
        String result = new String(arr);
        return result;
    }
}
